Computer Science 164 - Spring 98
Midterm Examination
Professor L. Rowe



Problem #1

(30 points) Define the following terms:
  • parser
  • terminal symbol
  • abstract class
  • method
  • abstract syntax tree
  • pushdown automaton
  • grammar rule
  • automatic parser generator
  • handle
  • instance
  • arbitrary rewrite system
  • syntax directed translation
  • rvalue
  • leftmost derivation
  • reduce/reduce error


Problem #2

(10 points) Answer the following:

T F A pushdown automaton can recognize a language defined by a regular grammar.
T F A bottom-up parser performs reductions in the same order as a rightmost derivation.
T F A variable declared in Java to be a type Class can reference the object Object.
T F Class variables cannot be defined in a Java abstract class.
T F A nondeterministic fsa can recognize languages that a deterministic fsa cannot recognize.


Problem #3

(20 points) Answer the following questions given the fsa:

fsa


a) Identify which sentences are recognized by this automaton.

Yes No aab
Yes No bbabca
Yes No bcaabaaabaa
Yes No bbcb
Yes No abbbbabbabca

b) Show a left regular grammar that specifies the language recognized by the fsa. (Hint: write a grammar rule which would produce the fsa using the algorithm given in class.)

c) Describe in English the language recognized by the fsa.



Problem #4

(20 points) Given the following LR parser tables and grammar rules, answer the following questions.

a ( ) $ S L
0 s2 s3 . . 1 .
1 . . . acc . .
2 r1 r1 r1 r1 . .
3 s2 s3 . . 5 4
4 s2 s3 s6 . 7 .
5 r3 r3 r3 r3 . .
6 r2 r2 r2 r2 . .
7 r4 r4 r4 r4 . .

The grammar is
1: S -> a
2: S -> '('L')'
3: L -> S
4: L -> LS

a) Show the parse tree for the sentence "( ( a ( a ) ) )".

b) Show the parser configurations as it parses that input in the following table. You must use state numbers on the syntax stack. (Hint: 22 configurations are shown in the table -- the parse may take less than, more than, or equal to that number of steps.)

step stack input action
1 0

( ( a ( a ) ) ) $ shift 3
2 0 3

( a ( a ) ) ) $ shift 3
3
 
 
 
4
 
 
 
5
 
 
 
6
 
 
 
7
 
 
 
8
 
 
 
9
 
 
 
10
 
 
 
11
 
 
 
12
 
 
 
13
 
 
 
14
 
 
 
15
 
 
 
16
 
 
 
17
 
 
 
18
 
 
 
19
 
 
 
20
 
 
 
21
 
 
 
22
 
 
 


Problem #5

(20 points) Given the Java program fragments:

C.java:
	package p;
	public class C {
		public int x;
		protected double y;
		private char z;
		public char getZ( ) { return z; }
	}
D.java:
	package p;
	public class D extends C {
		String S;
		public void f( ) {
			S = ((Integer)x).toString( );
		}
	}
Hello.java:
	package p;
	public class Hello {
		public static void main(String[] args) {
			C ac = new C();
			D ad = new D();
		}
	}

a) Which instance variables can be accessed using the object ac in the method main?

b) Which instance variables can be accessed using the object ad in the method main?

c) Which instance variables can be accessed in the method called by D.f() in the method main?



Total: 100 points



Posted by HKN (Electrical Engineering and Computer Science Honor Society)
University of California at Berkeley
If you have any questions about these online exams
please contact examfile@hkn.eecs.berkeley.edu.
Created Wed 31 Dec 1969 04:00:00 PM PST